FormData: FormData() constructor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Note: This feature is available in Web Workers.
The FormData()
constructor creates a new FormData
object.
Syntax
new FormData()
new FormData(form)
new FormData(form, submitter)
Parameters
form
Optional-
An HTML
<form>
element — when specified, theFormData
object will be populated with theform
's current keys/values using the name property of each element for the keys and their submitted value for the values. It will also encode file input content. Aformdata
event is fired on the form when theFormData
object is created, allowing the form to modify the formdata if necessary. submitter
Optional-
A submit button that is a member of the
form
. If thesubmitter
has aname
attribute or is an<input type="image">
, its data will be included in theFormData
object (e.g.btnName=btnValue
).
Exceptions
TypeError
-
Thrown if the specified
submitter
is not a submit button. NotFoundError
DOMException
-
Thrown if the specified
submitter
isn't a member of theform
. Thesubmitter
must be either a descendant of the form element or must have aform
attribute referring to the form.
Examples
Creating an empty FormData
Prepopulating from a HTML form element
You can specify the optional form
and submitter
arguments when creating the FormData
object, to prepopulate it with values from the specified form.
Note: Only successful form controls are included in a FormData object, i.e. those with a name and not in a disabled state.
HTML
<form id="form">
<input type="text" name="text1" value="foo" />
<input type="text" name="text2" value="bar" />
<input type="text" name="text2" value="baz" />
<input type="checkbox" name="check" checked disabled />
<button name="intent" value="save">Save</button>
<button name="intent" value="saveAsCopy">Save As Copy</button>
</form>
<output id="output"></output>
JavaScript
const form = document.getElementById("form");
const submitter = document.querySelector("button[value=save]");
const formData = new FormData(form, submitter);
const output = document.getElementById("output");
for (const [key, value] of formData) {
output.textContent += `${key}: ${value}\n`;
}
Result
For brevity, the <form>
element is hidden from view.
Specifications
Specification |
---|
XMLHttpRequest Standard # dom-formdata |
Browser compatibility
BCD tables only load in the browser